# 箱线图
import numpy as np
data = np.random.normal(size=(10,4))
lables = ['A', 'B', 'C', 'D']
# Matplotlib绘制
import matplotlib.pyplot as plt
plt.boxplot(data,labels=lables)
plt.show()
# Seaborn 绘制
import seaborn as sns
import pandas as pd
df = pd.DataFrame(data,columns=lables)
sns.boxplot(data=df)
plt.show()

# 热力图
# 数据准备
import numpy as np
np.random.seed(0)
import matplotlib.pyplot as plt
import seaborn as sns
# 初始化参数
sns.set()
uniform_data=np.random.rand(3,3)
heatmap=sns.heatmap(uniform_data)
plt.show()

# 设置热力区间 vmax=0.9,vmin=0.1
heatmap=sns.heatmap(uniform_data,vmax=0.9,vmin=0.1)
plt.show()
# 设置颜色差异 center=0
heatmap=sns.heatmap(uniform_data,center=0)
plt.show()
# 数据 = 取自seaborn-data annot=True 显示数值 fmt='d' 数值格式
flights=sns.load_dataset('flights',data_home='seaborn-data',cache=True)
flights=flights.pivot('month','year','passengers')
ax=sns.heatmap(flights,annot=True,fmt='d')
plt.show()
# 调色
ax=sns.heatmap(flights,cmap='Blues')
plt.show()


# 雷达图
# 数据准备
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['KaiTi'] # 显示中文字体
items=np.array([u"品牌", u"价格", u"外观", u"硬件", u"拍照", u"电量"]) # u:unicode
scores=[88,90,20,40,78,99]

# 画图数据准备
angles=np.linspace(0,2*np.pi,len(items),endpoint=False)# 分割圆周长

#concatenate:拼接
scores=np.concatenate((scores,[scores[0]]))
angles=np.concatenate((angles,[angles[0]]))
items=np.concatenate((items,[items[0]]))
#画布
fig=plt.figure()

ax=fig.add_subplot(111,polar=True) #设置字画布，极坐标系：True
ax.plot(angles,scores,'*-',linewidth=2)#连线
ax.fill(angles,scores,alpha=0.25)#上色
ax.set_thetagrids(angles * (180/np.pi), items)#标签
plt.show()

# 二元变量分布
# 数据准备
import seaborn as sns
tips = sns.load_dataset('tips')
print(tips.head(10))# 取10行数据
# total_bill   tip     sex smoker  day    time  size
# 画二元变量分布图（散点图，核密度图，Hexbin图）
sns.jointplot(x='total_bill',y='tip',data=tips,kind='scatter')
sns.jointplot(x='total_bill',y='tip',data=tips,kind='kde')
sns.jointplot(x='total_bill',y='tip',data=tips,kind='hex')
plt.show()

# 成对关系
# 数据准备
import seaborn as sns
iris = sns.load_dataset('iris')
print(iris)
#sepal_length  sepal_width  petal_length  petal_width    species
sns.pairplot(iris)
plt.show()